#!/bin/bash
# 操作符练习

val=`expr 2 + 2`
echo "两个数之和:$val"

a=11
b=22
echo "相加结果："`expr $a + $b`
echo "两束是否相等："`expr [$a == $b]`
echo "相乘结果："`expr $a \* $b`

# 关系运算符 -gt -ge -eq -ne -lt -le
# 比较结果没有输出出来！！！
echo "a -ge  b的比较结果" [ $a -ge $b ]

if [ $a -ge $b ]
then
	echo "$a -ge $b : a大于等于b"
else
	echo "$a -ge $b: a小于b"
fi

# 布尔运算符 ！  -o  -a  貌似不能直接输出运算结果
echo [ $a -lt 10 -o $b -gt 20 ]


# 逻辑运算符  和布尔运算符的作用一样,逻辑运算符要带两个中括号
if [[ $a -lt 100 && $b -gt 100 ]]
then 
	echo "返回true"
else
	echo "返回false"
fi

# 字符串运算符 =  != -z(为零) -n(长度不为零) str(检查字符串是否为空)
a="abc"
b="def"

if [ $a = $b ]
then
	echo "$a = $b 字符串相等"
else
	echo "$a = $b 两个字符串不等"
fi

if [ $a != $b ]
then
	echo "$a != $b a不等于b"
else
	echo "$a != $b a等于b"
fi

if [ -z $a ]
then
	echo "-z $a a字符串长度为零"
else 
	echo "-z $a a字符串长度不为零"
fi



# 文件测试运算符 -b -c -d -f -g -k -p -u -r -w -x -s -e 
:<<EOF 
查文件的各种属性
是否存在、是否为空、是否可读、是否可写、是否设置SUID、是否是有名管道
是设置了SGID位 、是否设置了粘着位(Sticky Bit)、是否是普通文件、是否是目录
是否是字符设备文件、是否是块设备文件、
EOF

file="/usr/lqq/operation.sh"

if [ -e $file ]
then
	echo "$file exists"
else
	echo "$file not exists"
fi 

if [ -s $file ]
then
	echo "$file size great than 0"
else
	echo "$file size is 0"
fi 

if [ -r $file ] 
then
	echo "$file chan be read"
else
	echo "$file can not be read"
fi 

if [ -w $file ]
then
	echo "$file can be writen"
else 
	echo "$file chan not be writen"
fi

if [ -x $file ]
then
	echo "$file chan be executed"
else
	echo "$file can not be executed"
fi 

if [ -f $file ]
then 
	echo "$file is normal file"
else 
	echo "$file is not a normal file"
fi 

if [ -c $file ]
then
	echo "$file is a block device"
else
	echo "$file is not a block device"
fi 


# test 命令，相当于中括号

if test $a -gt $b
then 
	echo "test命令测试，$a -gt $b 结果：a大于b"
else
	echo "test命令测试 $a -gt $b 结果：a小于等于b"
fi










